package ink.metoo.fish.config

import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.cors.CorsConfiguration
import org.springframework.web.cors.UrlBasedCorsConfigurationSource
import org.springframework.web.filter.CorsFilter

@Configuration
class GlobalCorsConfig {

    @Bean
    fun corsFilter(): CorsFilter {
        // 1. 添加 CORS配置信息
        val config = CorsConfiguration()
        // 放行哪些原始域
        config.addAllowedOriginPattern("*")
        // 是否发送 Cookie
        config.allowCredentials = true
        // 放行哪些请求方式
        config.addAllowedMethod("*")
        // 放行哪些原始请求头部信息
        config.addAllowedHeader("*")
        // 暴露哪些头部信息
        config.addExposedHeader("*")
        // 2. 添加映射路径
        val corsConfigurationSource = UrlBasedCorsConfigurationSource()
        corsConfigurationSource.registerCorsConfiguration("/**", config)
        // 3. 返回新的CorsFilter
        return CorsFilter(corsConfigurationSource)
    }

}